И. Шагурин

Архитектура и функционирование микроконтроллеров семейства 68HC705

    Компания Motorola сохраняет лидерство в производстве микроконтроллеров, обеспечив в 1997 году 17% их общемирового выпуска. Основной объем производства составляют 8-разрядные микроконтроллеры семейств 68HC05/705 и 68HC11/711, которые выпускаются с масочно-программируемым (68HC05, 68HC11) или электрически-программируемым (68HC705, 68HC711) внутренним ПЗУ программ. Описание этих микроконтроллеров, а также других семейств микропроцессоров и микроконтроллеров компании Motorola дано в монографии [1].
    Семейство 68HC05/705, ориентированное на применение в изделиях массового потребления, отличается широкой номенклатурой выпускаемых моделей (более 200 типов) и большими объемами выпуска (к 1998 году было продано более 2,5 млрд экземпляров). Однако до последнего времени основную долю выпуска составляли микроконтроллеры с масочно-программируемым ПЗУ, которые экономически невыгодно использовать в изделиях малой и средней серийности. Это обстоятельство значительно ограничивало возможности применения данного семейства российским производителями, большинство из которых сейчас не осуществляет больших объемов выпуска.
    В 1998 году компания Motorola начала реализацию специальной программы поставки микроконтроллеров, ориентированной на производителей продукции малой и средней серийности. Эта программа, получившая название “No Excuses”, предполагает значительное расширение поставок ряда моделей микроконтроллеров семейства 68HC705 с однократно-программируемым внутренним ПЗУ, снижение их цены, сокращение сроков поставки (до 1–2 недель), обеспечение пользователей набором средств программирования-отладки и необходимой технической информацией [2]. Микроконтроллеры семейства 68HC705, включенные в программу “No Excuses”, представляют значительный интерес для российских производителей аппаратуры, так как их применение обеспечивает технический и экономический эффект для большой номенклатуры изделий, начиная от сравнительно простых устройств широкого применения (детские игрушки, кодовые замки, несложная бытовая техника) и кончая достаточно сложной измерительной и телекоммуникационной аппаратурой, системами промышленной автоматики, автомобильной электроникой.
    Обзор характеристик микроконтроллеров семейства 68HC05/705 содержится в ранее опубликованных работах [3,4]. Однако редакция считает полезным более подробно познакомить читателей с архитектурой и функциональными возможностями микроконтроллеров, включенных в программу “No Excuses”. С этой целью журнал начинает публикацию цикла статей:

    Содержание статей цикла поможет читателям оценить целесообразность применения микроконтроллеров данной группы в их разработках, выполнить проектирование, программирование и отладку аппаратуры н а базе этих микроконтроллеров.

Общая структура и функционирование микроконтроллеров

    Микроконтроллеры семейства 68HC705 содержат на кристалле 8-разрядный процессор, внутреннюю память, которая включает ОЗУ и программируемое ПЗУ с однократной записью, параллельные порты ввода/вывода данных, ряд периферийных устройств и обслуживающих блоков (рис. 1).

Рис. 1 Структура микроконтроллеров семейства 68НС705

    Процессор выполняет обработку 8-разрядных операндов и реализует набор из 65 команд. Он содержит пять программно-доступных регистров: 8-разрядные аккумулятор A, индексный регистр X, регистр условий CCR, и 16-разрядные указатель стека SP и программный счетчик PC, в которых используется только часть разрядов. Для адресации памяти программ используются от 11 до 14 младших разрядов PC (в зависимости от объема размещенной на кристалле памяти), при этом старшие разряды имеют значение “0”. Для стековой памяти в ОЗУ выделяется 64 байта, адресуемых шестью младшими разрядами SP.
    Регистр A используется для хранения промежуточных данных. Регистр X служит, в основном, для формирования адреса, но в ряде случаев является также дополнительным местом размещения операндов. Регистр CCR содержит значения пяти признаков (рис. 1): C — признак переноса; Z — признак нулевого результата; N — признак знака; I — признак разрешения прерывания; H — признак переноса между тетрадами (используется при операциях над двоично-десятичными числами).
    Для управления процессором служат внешние сигналы RESET# и IRQ# (рис. 1). При поступлении сигнала RESET#=0 происходит сброс всех регистров микроконтроллера в начальное состояние, а при последующей установке RESET#=1 осуществляется запуск процессора — начинается выполнение программы с первой команды, адрес которой хранится в ППЗУ в качестве вектора начальной установки (рис. 2). Если запуск процессора обусловлен включением питания или сигналами блока контроля функционирования COP, то процессор сам устанавливает на этом выводе значение сигнала RESET#=0, информируя внешние устройства о начале выполнения рабочей программы. Сигнал IRQ#=0, поступающий от внешних устройств, является запросом прерывания программы. Подробнее процедуры запуска и обслуживания запросов прерывания рассмотрены ниже. В процессе записи содержимого во внутреннее ППЗУ микроконтроллера на вывод IRQ# подается напряжение программирования Vpp = 16,5 В.

Рис. 2 Распределение адресного пространства микроконтроллеров

    Распределение адресного пространства внутренней памяти показано на рис. 2. Младшие 32 адреса используются для обращения к регистрам блока программирования, параллельных и последовательных портов, таймера и других периферийных устройств микроконтроллера. Обращение к этим регистрам осуществляется так же, как к ячейкам памяти, путем формирования соответствующего адреса в адресном пространстве.
    В адресном пространстве ОЗУ располагаются ячейки стека, которые имеют адреса в диапазоне $00C0 – $00FF. Эти ячейки адресуются с помощью указателя стека SP, в котором десять старших разрядов имеют постоянное значение 0000000011 (рис. 1). Шесть младших разрядов SP при установке микроконтроллера в начальное состояние принимают значение 111111, поэтому в исходном состоянии SP адресует ячейку ОЗУ с адресом $00FF. После записи байта в эту ячейку содержимое SP уменьшается на 1, адресуя следующую незаполненную ячейку стека. Таким образом стек заполняется в направлении уменьшения адресов. При работе стека меняется значение только шести младших разрядов SP, поэтому объем стека ограничен 64 байтами. В случае переполнения стека содержимое SP возвращается в исходное состояние $00FF, после чего цикл изменения его содержимого повторяется.
    Основной объем внутренней памяти занимает однократнопрограммируемое ПЗУ, в которое записываются программы пользователя. Часть ОППЗУ могут занимать служебные программы, выполняющие начальную загрузку, тестирование и другие функции. Эти программы записываются в процессе изготовления микроконтроллеров масочное программирование). В микроконтроллерах серии B содержится также репрограммируемое ЭСППЗУ с электрическим стиранием емкостью 256 бит. В микроконтроллерах 68HC705C8A,9A обеспечивается возможность изменения объема ОЗУ от 176 до 304 или 352 байт (табл. 1) за счет соответствующего уменьшения емкости ОППЗУ. Требуемый объем ОЗУ устанавливается записью определенных значений битов в регистр, задающий режим работы микроконтроллера.

Таблица 1. Функциональный состав микроконтроллеров 68HC705

Тип Внутренняя память Линии ввода/вывода Корпус Периферийные устройства
Серия К:
68HC705KJ1 ОЗУ - 64 бит
ОППЗУ - 1,2 К
10 16-DIP
16-SOIC
таймер MFT, COP
Серия J:
68HC705J1A ОЗУ - 64
ОППЗУ - 1,2 Кбит
14 20-DIP
20-SOIC
таймер MFT, COP
Серия P
68HC705P6A ОЗУ - 176 бит
ОППЗУ - 4,6 К
20 + 1 вх 28-DIP
28-SOIC
таймерный блок, COP,
послед.порт SIOP,
4-канальный АЦП
Серия С:
68HC705C8A ОЗУ - 176/304 бит
ОППЗУ - 8К
27 + 7 вх 40-DIP
44-QFP
44-PLCC
таймерный блок,
COP,послед. порты SCI, SPI
68HC705C9A ОЗУ - 176/352 бит
ППЗУ - 16К
31 -"- -"-
Серия B:
68HC705B16 ОЗУ - 352 бит
ОППЗУ - 15К
ЭСППЗУ - 256 бит
32 + 2 вых 64-QFP
52-PLCC
таймерный блок, COP,
8-канальный АЦП,
2 выхода ШИМ
Серия L:
68HC705L16 ОЗУ - 512 бит
ОППЗУ - 16К
16 + 8вх + 15вых 80-QFP 2таймерных блока, COP,
базовый таймер, послед порт
SSPI, драйвер ЖКИ

    Последние 16 байт адресного пространства памяти служат для хранения векторов начальной установки и прерываний (рис. 3).
    В адресном пространстве внутренней памяти размещены также служебные регистры, используемые для управления режимом работы микроконтроллера (option registers). Обычно имеется от одного до трех таких регистров, содержимое которых определяет функционирование различных устройств микроконтроллера. Отдельные биты в этих регистрах имеют следующее назначение:

    Кроме перечисленных, в различных моделях микроконтроллеров регистры режимов имеют ряд битов, определяющих режимы работы ГТИ, портов ввода/вывода и некоторых других устройств. Реально регистры режимов являются ячейками ОППЗУ. При программировании ОППЗУ в эти ячейки записывается содержимое, которое в дальнейшем может быть только считано. Поэтому установленные таким образом режимы работы устройств микроконтроллера далее остаются неизменными.
    Различные модели микроконтроллеров семейства отличаются значениями емкости ОЗУ (от 64 до 512 байт) и ОППЗУ программ (от 1,2 до 15 Кбайт), набором периферийных устройств, количеством внешних выводов. Функциональный состав микроконтроллеров семейства 68HC705, включенных в программу “No Excuses”, приведен в табл. 1. В этой таблице приведены также типовые значения стоимости различных моделей для россий-ских потребителей.
    Для параллельного ввода/вывода данных микроконтроллеры имеют от 2 до 4 портов, некоторые выводы которых используются только в качестве входов или выходов. Для отдельных групп выводов реализуется повышенная нагрузочная способность по току — до 8–10 мА. Общее число линий ввода/вывода составляет от 10 до 39, при этом микроконтроллеры серий K, J, P, имеющие небольшое число таких линий, размещаются в дешевых корпусах с малым числом выводов. Периферийные устройства выполняют таймерные функции, последовательный ввод/вывод данных, аналого-цифровое преобразование, формирование сигналов с широтно-импульсной модуляцией и некоторые другие операции.
    В большинстве моделей используется таймерный блок, который содержит 16-разрядный таймер и схемы, фиксирующие время поступления входных сигналов IC (input capture) и формирующие в заданный момент времени выходные сигналы OC (output compare). В некоторых моделях используется 15-разрядный многофункцио-нальный таймер MFT, который в заданные моменты времени выдает запросы прерывания процессора. Все микроконтроллеры семейства 68HC705 имеют блок контроля функционирования COP (computer operating properly), который осуществляет контроль в ыполнения текущей программы и производит сброс микроконтроллера в исходное состояние (reset) в случае ее “зависания” — нарушения нормального хода программы или при обращении по адресу, неразрешенному для использования. Микроконтроллеры серии L содержат два таймерных блока и дополнительный 14-разрядный базовый таймер для формирования периодических прерываний.
    Для последовательного обмена данными используются асинхронный порт SCI (serial communication interface) или синхронный порт SPI (serial peripheral interface). Порт SIOP реализует асинхронный последовательный обмен с более ограниченными возможно-стями, чем SCI, а порт SSPI является модифицированным вариантом SPI.
    Ряд моделей содержит на кристалле 8-разрядный АЦП, имеющий 4 или 8 входных каналов. Некоторые модели имеют широтно-импульсные модуляторы (ШИМ), на выходах которых генерируются последовательности импульсов с программируемой частотой и скважностью. Микроконтроллеры серии L имеют дополнительные выходы, к которым подключаются специальные схемы (драйверы ЖКИ), формирующие сигналы управления жидкокристаллическими индикаторами-дисплеями.
    Подробно периферийные устройства будут описаны в следующей статье цикла.
    Микроконтроллеры имеют внутренний генератор тактовых импульсов (ГТИ), для работы которого к выводам OSC1,2 подключается частотно-задающий кварцевый или керамический резонатор (рис. 1) с внешним или внутренним шунтирующим резистором R. Частота формируемых внутренних тактовых импульсов Ft = Fr/2, где Fr — собственная частота резонатора. Возможно также подключение внешнего генератора импульсов. Максимальная тактовая частота Ft для рассматриваемых микроконтроллеров составляет 2,1 МГц при Eп = 5,0 В и 1,0 МГц при Eп = 3,3 В. Для моделей 68HC705KJ1, J1A, C8A имеются модификации с повышенным значением Ft — до 4,0 МГц при Eп = 5,0 В и 2,1 МГц при Eп = 3,3 В.
    В состав серий K и J входят модели 68HRC705KJ1, 68HRC705J1A, в которых вместо внешнего резонатора используется RC-цепь. Для их функционирования достаточно подключить к выводам OSC1,2 внешний или внутренний резистор R. Внутренний резистор подключается при программировании ОППЗУ путем записи соответствующего бита в регистр режима микроконтроллера. При использовании внутреннего резистора ГТИ вырабатывает тактовые импульсы с частотой Ft от 1,5 МГц (при Eп = 3,3 В) до 2,5 МГц (при Eп = 5 В). При подключении внешнего резистора частота Ft зависит от его сопротивления R, изменяясь от 4 МГц при R = 5 кОм до 0,5–1,0 МГц при R = 500 кОм.
    Микроконтроллеры функционируют при напряжениях питания Eп = 5 В или 3,3 В в расширенном температурном диапазоне -40–+85°С ( модель 68HC705B16 имеет модификацию с диапазоном -40–+85°C). В табл. 2 приведены типовые значения мощности Pп, потребляемой различными моделями микроконтроллеров при указанной максимальной тактовой частоте Ft в рабочем режиме и режиме ожидания. Так как микроконтроллеры изготовлены по КМОП-технологии, они имеют малое энергопотребление, которое в рабочем режиме составляет 3–6 мВт для Eп = 3,3 В и 17–30 мВт для Eп = 5 В. При снижении Ft потребление мощности пропорционально уменьшается.
    Микроконтроллеры имеют режимы ожидания и останова, при которых обеспечивается пониженное энергопотребление.
    В режиме ожидания, который реализуется после поступления команды WAIT, прекращает работу процессор, но продолжают функционировать блок контроля COP, таймер и последовательные порты (если они есть). При этом потребление мощности снижается в 2–5 раз (табл. 2). Выход из режима ожидания происходит либо при поступлении запросов прерывания от внешних устройств, таймера или последовательных портов, либо при поступлении сигнала сброса в начальное состояние от внешнего устройства (вход RESET#) или от блока контроля функционирования COP.
    В режиме останова, который реализуется после поступления команды STOP, останавливается ГТИ, и прекращается работа всех устройств микроконтроллера. Типовое значение потребляемого тока в этом режиме составляет 1–5 мкА, а максимальное значение не превышает 50 мкА. Выход из режима останова происходит при поступлении внешних сигналов прерывания или сброса RESET#. При этом требуется определенное время для стабилизации тактовой частоты, которое может достигать значения Ts = 4064Tt.

Таблица 2. Максимальная тактовая частота и мощность, потребляемая микроконтроллерами в рабочем режиме/режиме ожидания

Тип En= 3,3 B En= 5 B
Ft, МГц Pn, мВт Ft, МГц Pn, мВт
68HC705KJ1 1,0
2,1
4,0/1,0
4,6/1,0
2,1
4,0
20,0/5,0
26,0/5,5
68HC705J1A 1,0 4,0/0,8 2,1 17,5/2,3
68HC705P6A 1,0 5,9/3,3 2,1 20,0/10,0
68HC705C8A 1,0 5,1/2,4 2,1 25,0/9,8
68HC705C9A 1,0 3,3/1,7 2,1 17,5/5,0
68HC705B16 1,0 4,0/1,3 2,1 17,5/5,0
68HC705LI6 1,0 5,9/2,6 2,1 30,0/15,0

    При поступлении команд WAIT и STOP в регистре CCR устанавливается значение признака I = 0, чтобы разрешить последующий выход из этих режимов по за-просам прерывания.
    В микроконтроллерах 68HC705KJ1,J1A,C8A,C9A реализуется режим сохранения данных, который устанавливается при подаче “0” на вход RESET# и снижении напряжения питания до значения Eп = 2,0 В. В этом случае прекращается функционирование всех устройств микроконтроллера, но сохраняются данные, записанные в ОЗУ и регистрах. Потребляемая мощность снижается до уровня нескольких мкВт. Для возврата в рабочий режим необходимо повысить Eп до нормального уровня (3,3 или 5,0 В) и установить значение “1” на входе RESET#.

Способы адресации и система команд

    Процессор выполняет набор операций над операндами, размещенными в регистрах A, X и памяти. Команды имеют длину от 1 до 3 байтов: первый байт содержит код операции, второй и третий байты обеспечивают адресацию операнда. Для выборки операнда используются следующие способы адресации:

    При косвенно-регистровой и прямой адресации с 8-разрядным адресом обращение возможно только к 256 начальным позициям адресного пространства (рис. 2), в котором располагаются регистры устройств микроконтроллера и основная часть ОЗУ. При индексной адресации смещение является числом без знака. Поэтому при 8-разрядном смещении адресуются 512 начальных позиций адресного пространства. Данные способы адресации будем называть короткими. Индексная адресация с 16-разрядным смещением и прямая с 16-разрядным адресом позволяют обращаться к любой позиции адресного пространства. Эти способы адресации будем называть длинными. При относительной адресации возможен переход к командам, расположенным в пределах 127 позиций ниже или выше очередной команды программы.
    Выполняемые процессором команды делятся на группы команд пересылки, арифметических и логических операций, сдвигов, битовых операций и установки признаков, управления программой и процессором. В набор команд входят безадресные и одноадресные команды. В одноадресных командах задается адрес используемого операнда или размещения результата. В табл. 3–9 после мнемокода этих команд указывается символ (opr), адресуемый таким образом операнд обозначается символом M. При непосредственной адресации после мнемокода команды записывается операнд # Im.
    Команды пересылки (табл. 3) осуществляют загрузку операндов из памяти в регистры A, X или запись содержимого этих регистров в память. При загрузке (команды LDA, LDX) используются все способы адресации, кроме относительного, при записи в память (команды STA, STX) не используется также непосредственная адресация. Команды TAX, TXA выполняют передачу операндов между регистрами A, X. К этой же группе относятся команды CLRA, CLRX, CLR, производящие запись “0” в регистры A, X и ячейку памяти, выбираемую с помощью коротких способов адресации.

Таблица 3. Команды пересылки

Мнемокод Команда Операция
LDA (opr)
LDX (opr)
Загрузка А
Загрузка Х
М -&GTA
M ->X
STA (opr)
STX (opr)
Запись А в память
Запись Х в память
A - >M
X &GTM
TAX
TXA
Пересылка А в Х
Пересылка Х в А
А ->X
X ->A
CLR (opr)
CLRA
CLRX
Запись 0 в М
Запись 0 в А
Запись 0 в Х
$00 ->M
$00 -&GTA
$00 -&GTX

    Команды арифметических операций (табл. 3) выполняют соответствующие действия над операндами, один из которых располагается в аккумуляторе A, где размещается затем результат. При операциях сложения и вычитания с учетом и без учета признака переноса C (команды ADC, ADD, SBC, SUB) второй операнд M адресуется любым способом, кроме относительного. При операциях инкремента, декремента (команды INC, INCA, INCX, DEC, DECA, DECX) и изменения знака (перевод в дополнительный код, команды NEG, NEGA, NEGX) используются только короткие способы адресации. Команда умножения MUL выполняется над 8-разрядными операндами без знака, расположенными в регистрах A, X, 16-разрядное произведение размещается в этих же регистрах (старший байт в X, младший байт в A). Операция деления процессором не производится. Команды сравнения CMP, CPX выполняют вычитание операндов без записи результата, но с установкой значений признаков N, Z, C в соответствии с полученным результатом. К оманды тестирования TST, TSTA, TSTX устанавливают признаки N, Z в соответствии со значением выбираемого операнда.

Таблица 4. Команды арифметических и логических операций, сравнения и тестирования

Мнемокод Команда Операция
ADD (opr)
ADC (opr)
SUB (opr)
SBC (opr)
Сложение
Сложение с переносом
Вычитание
Вычитание с заемом
A + M ->A
A + M+ C -&GTA
A - M -&GTA
A - M - C -&GTA
INC (opr)
INCA
INCX
DEC (opr)
DECA
DECX
Инкремент М
Интемент А
Инкремент Х
Декремент М
Декремент А
Декремент Х
M + 1 -&GTM
A + 1 -&GT A
X + 1 -&GT X
M - 1 -&GTM
A - 1 -&GTA
X - 1 -&GTX
NEG (opr)
NEGA
NEGX
Изменение знака М
Изменение знака А
Изменение знака Х
0 - M -&GTM
0 - A -&GTA
0 - X -&GTX
CMP (opr)
CPX
TST (opr)
TSTA
TSTX
Сравнение А с М
Сравнение Х с М
Тестирование М
Тестирование А
Тестирование Х
A - M
X - M
M - O
A - 0
X - 0
MUL Беззнаковое умножение A x X -&GTX : A
AND (opr)
OR (opr)
EOR (opr)
Логическое И
Логическое ИЛИ
Исключающее ИЛИ
A ^ M -&GTA
A M -&GTA
A + M - &GTA
COM (opr)
COMA
COMX
Логическая инверсия М
Логическая инверсия А
Логическая инверсия Х
M -&GT M
A -&GT A
X -&GT X
BIT (opr) Битовое тестирование A ^ M

    К этой группе относятся также команды AND, ORA, EOR (табл. 4), которые выполняют логические операции И, ИЛИ, Исключающее ИЛИ над разрядами содержимого аккумулятора A и адресуемого операнда. При выполнении этих команд используются такие же способы адресации, как в командах сложения-вычитания. В командах логической инверсии COM, COMA, COMX используются только короткие способы адресации. Команда битового тестирования BIT производит логическое умножение операндов (операция И) без записи результата, но с установкой признаков N, Z.
    Команды сдвигов (табл. 5) выполняют арифметические (команды ASL, ASLA, ASLX, ASR, ASRA, ASRX), логические (команды LSL, LSLA, LSLX, LSR, LSRA, LSRX) и циклические (команды ROL, ROLA, ROLX, ROR, RORA, RORX) сдвиги над операндами, расположенными в регистрах A, X или позициях памяти, выбираемой с помощью коротких способов адресации. Отметим, что команды ASL, ASLA, ASLX реализуют такие же операции, как и LSL, LSLA, LSLX.

Таблица 5. Команды сдвигов

Мнемокод Команда Операция
ASL, LSL (opr)
ASLS, LSLA
ASLX, LSLX
арифметический,
логический
сдвиг влево
ASR (opr)
ASRA
ASRX
арифметический
сдвиг
вправо
LSR (opr)
LSRA
LSRX
логический
сдвиг
вправо
ROL (opr)
ROLA
ROLX
циклический
сдвиг
влево
ROR (opr)
RORA
RORX
циклический
сдвиг
вправо

    Команды битовых операций BCLR, BSET (табл. 6) устанавливают значение “0” или “1” для n-го бита в операнде, 8-разрядный адрес которого содержится во втором байте команды (прямая адресация). Номер бита n задается в команде. Команды CLC, CLI и SEC, SEI устанавливают значение “0” или “1” признаков C, I в регистре условий CCR. При этом команды CLI и SEI разрешают и запрещают обслуживание всех поступающих запросов прерывания.

Таблица 6. Команды битовых операций и установки признаков

Мнемокод Команда Операция
BCLR n,(opr)
BSET n,(opr)
установка значения бита bn=0
установка значения бита bn=1
0 -> bn
1 -> bn
CLC
CLI
SEC
SEI
установка признака С=0
установка признака I=0
установка признака C=1
установка признака I=1
0 -> C
0 -&GT I
1 -&GT C
1 -&GT I

При выполнении команд пересылки, арифметических и логических операций, сдвигов, битовых операций устанавливаются значения признаков в регистре условий CCR. В табл. 7 показано изменение этих признаков:
“+” — установка значения по результату операции,
“–” — значение остается неизменным,
“0”, “1” — установка соответствующих значений признаков.

Таблица 7. Установка значений признаков при выполнении команд

Команды Признаки
H I N Z C
LDA, LDX, STA, AND, ORA,
EOR, BIT, INC, INCA, INCA,
INCX, DEC, DECA, DECX
- - + + -
ADD, ADDC + - + + +
SUB, SBC, NEG, CMP, CPX,
ASL, ASLA, ASLX,
LSL, LSLA, LSLX,
ASR, ASRA, ASRX,
ROL, ROLA, ROLX,
ROR, RORA, RORX
- - + + +
LSR, LSRA, LSRX - - 0 + +
CLR, CLRA, CLRX - - 0 1 -
COM, COMA, COMX - - + + 1
STX, TST, TSTA, TSTX - - + + 0
MUL 0 - - - 0
CLC - - - - 0
CLI - 0 - - -
SEC - - - - 1
SEI - 1 - - -
SWI - 1 - - -
RTI + + + + +
BRCLR, BRSET - - - - +
WAIT, STOP - 0 - - -

    Для управления выполнением программы используются команды безусловного перехода JMP, условных и безусловных ветвлений: Bсс, BRCLR, BRSET и BRA, BRN, перехода и ветвления к подпрограмме: JSR, BSR, возврата из подпрограммы RTS, программного прерывания SWI, возврата из прерывания RTI (табл. 8). Команда JMP загружает в программный счетчик PC адрес следующей команды из ячейки памяти, выбираемой любым способом, кроме относительной адресации.

Таблица 8. Команды управления программой и процессором

Мнемокод Команда Операция
JMP (opr)
Bcc d8
Безусловный переход
Условное ветвление
EA -&GT PC
PC +d8 -> PC, если СС=1
BRA d8
BRN d8
Безусловное ветвление
Отсутствие ветвления
PC + d8 -> PC
PC + 2 -> PC
BRCLR n,(opr), d8
BRSET n, (opr), d8
Ветвление при bn=0
Ветвление при b=1
PC + d8 -> PC, если bn=0
PC +d8 -> PC, если bn=1
JSR (opr) Переход к подпрограмме PC + n -> PC
PCI -&GT(SP), SP - 1 -&GTSP,
PCh ->(SP), SP - 1 ->SP,
(EA) -> PC
BSR d8 Ветвление к подпрограмме PC + 2 -&GTPC,
PCI -&GT(SP), SP - 1 -&GTSP
PCh ->(SP), SP - 1 -&GTSP, PC + d8 -> PC
RTS Возврат из подпрограммы SP + 1 -&GTSP, (SP) -&GT PCh,
SP + 1 -&GTSP, (SP) -&GT PCh
SWI Программное прерывание PC + 1 -&GTPC,
PCI -&GT(SP), SP - 1 -&GTSP,
PCh -&GT(SP), SP - 1 -&GTSP,
X -&GT(SP), SP - 1 -&GTSP,
A -&GT(SP), SP - 1 -&GTSP,
CCR -&GT(SP), SP - 1 -&GTSP,
Ve -&GT PC, 1 -&GTI
RTI Возврат из прерывания SP + 1 -&GTSP, (SP) -&GT CCR,
SP + 1 -&GTSP, (SP) -&GT A,
SP + 1 -&GTSP,(SP) -&GTX,
SP + 1 -&GTSP, (SP) -&GTPCh,
SP + 1 -&GTSP, (SP) -&GTPCI, 0 -&GTI
RSP Сброс регистра SP $00FF -&GT SP
NOP Отсутствие операций PC + 1 -&GTPC
WAIT Переход в режим ожидания Остановка процессора, 1 -> I
STOP Переход в режим останова Останова ГТИ, 1 -&GT I

    Команды ветвления используют только относительный способ адресации. Команды условного ветвления Bcc производят загрузку в PC нового адреса, если условие cc имеет значение “1”. В табл. 9 приведены 16 видов условий, которые вызывают ветвление программы. Помимо определенных значений признаков условием ветвления может быть поступление внешнего запроса прерывания на вход IRQ#. Мнемокод условия приписывается к букве B, образуя мнемокод соответствующей команды условного ветвления, например, B + PL = BPL — мнемокод команды ветвления при положительном результате предыдущей операции (признак N = 0). Команды BRCLR, BRSET проверяют значение n-го бита в операнде, выбираемом с помощью короткой прямой адресации, и выполняют ветвление, если bn равен “0” или “1”. Значение n задается непосредственно в этих командах: #im8 = n. Команда BRA осуществляет безусловное ветвление, то есть эквивалентна команде JMP с относительной адресацией. Команда BRN пропускает два байта в выполняемой программе.

Таблица 9. Мнемокоды и условия выполнения команд ветвления Bcc

Мнемокод Проверяемое условие Значение cc
NE
EQ
не равно (ненулевой результат)
равно (нулевой результат)
Z = 0
Z = 1
HI
HS
выше
ниже или равно
(Z + C) = 0
(Z + C) = 1
HS
LO
выше или равно (нет переноса)
ниже (есть перенос)
C = 0
C = 1
PL
MI
положительный результат
отрицательный результат
N = 0
N = 1
HCC
HCS
нет переноса между тетрадами
есть перенос между тетрадами
H = 0
H = 1
MC
MS
прерывания разрешены
прерывания запрещены
I = 0
I = 1
IH
IL
отсутствие запроса прерывания
поступление запроса прерывания
IRQ# = 1
IRQ# = 0

    Команды перехода и ветвления к подпрограмме JSR, BSR заносят из PC в стек адрес следующей команды программы, а затем загружают в PC новое содержимое. В команде JSR адрес EA ячейки, из которой загружается PC, определяется выбранным способом адресации возможен любой способ, кроме регистрового и относительного). Длина команды JSR может составлять n = 1, 2 или 3 байта, поэтому загружаемый в стек адрес следующей команды равен PC + n. В команде BSR адрес первой команды подпрограммы определяется с помощью относительной адресации. По команде возврата из подпрограммы RTS из стека восстанавливается прежнее содержимое PC.
    Команда программного прерывания SWI загружает в стек текущее содержимое PC и содержимое основных регистров: A, X, CCR. При выполнении этой команды заполняется пять ячеек стека. Затем в PC заносится адрес первой команды подпрограммы обслуживания прерывания (вектор прерывания Ve) и устанавливается значение признака I = 1, запрещающего последующее прерывание. Команда возврата из прерывания RTI восстанавливает прежнее содержимое регистров A, X, CCR, PC из стека и разрешает последующее прерывания, устанавливая значение признака I = 0.
    Для управления процессором служат команда RSP, устанавливающая в регистре SP начальное значение $00FF, команда NOP, не выполняющая каких-либо операций (пропуск байта), и команды WAIT, STOP, переводящие микроконтроллер в энергосберегающие режимы ожидания и останова с разрешением прерывания (установка в регистре CCR признака I = 1) для последующего возврата в рабочий режим.

Установка начального состояния и реализация прерываний

    Установка начального состояния микроконтроллера (процедура запуска RESET) производится в следующих случаях:

    В процессе начальной установки в программный счетчик PC из ячеек ОППЗУ, расположенных в последних ячейках адресуемой памяти (рис. 3), поступает вектор запуска Ve — адрес первой команды программы, выполняемой микроконтроллером. При включении питания требуется время Ts = 4064Tt для запуска ГТИ и установки начального состояния регистров, после чего начинается нормальная работа микроконтроллера. Некоторые модели позволяют запускать ГТИ с меньшим временем Ts = 128Tt или 16Tt, что обеспечивается при записи определенных управляющих битов в регистре режима. Для начальной установки по сигналу RESET#=0 его длительность должна быть не менее 2Tt. Сигналы сброса в начальное состояние от блока COP поступают при выявлении определенных видов сбоев в работе микроконтроллера (подробнее работа блока контроля COP будет рассмотрена в следующей статье цикла).
    Микроконтроллеры семейства 68HC705 реализуют одно программное (команда SWI) и от двух до шести аппаратных прерываний. При реализации прерывания в стек загружается содержимое основных регистров процессора в следующей последовательности CCR–A–X–PCh–PCl, где PCh, PCl — старший и младший байты содержимого PC. После этого в PC загружается вектор прерывания Ve — адрес первой команды подпрограммы обслуживания. Значения Ve содержатся в ячейках ОППЗУ, расположенных в последних 16 байт адресного пространства (рис. 3). Выполнение подпрограммы обслуживания завершается при поступлении команды возврата из прерывания RTI, которая выбирает из стека и восстанавливает содержимое регистров PC, X, A, CCR, обеспечивая продолжение прерванной программы.
    Программное прерывание реализуется при поступлении команды SWI, выполнение которой описано выше. Аппаратные прерывания вызываются внешними сигналами, поступающими на соответствующие входы микроконтроллера, и запросами периферийных устройств: таймера, последовательных портов. Аппаратные прерывания являются маскируемыми — их обслуживание не выполняется при установке признака I = 1 в регистре CCR. Команда SWI выполняется при любом значении признака I.
    На рис. 3. показано размещение в ОППЗУ векторов запуска и прерывания Ve для рассматриваемых моделей микроконтроллеров, где символом Y обозначен адрес последней ячейки адресного пространства (Y = 11...11).

Рис. 3. Размещение векторов запуска и прерываний Ve в адресном пространстве микроконтроллеров

    Внешними запросами прерывания являются сигналы, поступающие на вход IRQ# (микроконтроллер 68HCL16 имеет два входа IRQ#). В качестве дополнительных входов прерывания в ряде моделей можно использовать некоторые выводы портов (PA3-0 порта A для 68HC705KJ1,J1A; PA7-0 порта A для 68HC705P6A; PB7-0 порта B для 68HC705C8A,C9A), если установить соответствующие значения управляющих битов в регистрах режимов. В этих моделях общее число входов прерывания можно увеличить до 5 или 9. Некоторые модели микроконтроллеров (68HCKJ1,J1A,L16) имеют специальные регистры для управления внешними прерываниями, отдельные биты которых устанавливают и сбрасывают признаки поступления запросов прерывания, разрешают или запрещают их обслуживание.
    Специальный бит LEVEL в одном из регистров режима определяет вид внешних сигналов, вызывающих прерывания: отрицательный перепад потенциала при LEVEL=0, уровень “0” при LEVEL=1 (в некоторых моделях используются другие обозначения этого бита). Если прерывание вызывается перепадом потенциала, то по-сле его обслуживания следующее прерывание происходит только при поступлении нового перепада. Если прерывание вызывается уровнем, то при сохранении на входе запроса уровня “0” микроконтроллер повторяет выполнение подпрограммы обслуживания, пока не установится уровень “1”. В моделях 68HC705KJ1,J1A прерывания со входов PA3-0 вызываются положительным перепадом потенциала или уровнем “1”; в модели 68HC705P6A можно установить любой вид сигнала прерывания IRQ: положительный или отрицательный перепад, уровень “0” или “1”.
    Формирование внутренних запросов прерывания от периферийных устройств микроконтроллера: таймеров, последовательных портов, будет рассмотрено в следующей статье цикла.
    Поступление внешних или внутренних запросов проверяется микроконтроллером после выполнения каждой команды программы. Если поступило нескольких запросов, то в первую очередь обслуживается запрос с более высоким приоритетом. Запросы имеют фиксированные приоритеты. Высший приоритет установлен для внешних сигналов IRQ#, затем приоритеты запросов по-следовательно снижаются в соответствии с уменьшением адреса вектора прерываний Ve (снизу вверх на рис. 3).
    В данной статье рассмотрены общие вопросы функционирования микроконтроллеров, характерные для всех представителей данного семейства. Следующая статья цикла будет посвящена описанию размещаемых на кристалле периферийных устройств, набор которых является специфичным для каждой из моделей микроконтроллеров, определяя наиболее перспективные области ее применения.

Литература

Published by NewIT Labs
NEW IT Labs